#pragma once

namespace Base { namespace Sig {

    class SigSource;
    class Signal;

    class SigSite
    {
    protected:
        SigSite();
        virtual ~SigSite();
        
    public:
        virtual void receive(Signal*) = 0;
        bool hooked() const;
        
    private:
        friend class SigSource;
        
        SigSource* sigSource() const;
        void sigSource(SigSource *);

    private:
        SigSource*  m_sigSource;
    };

}}